<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>


    <script>
        // 定义函数 返回有序的数组
        // 插入排序 : 
        // 把无序数组中的元素（A）和有序数组中的元素(O)进行对比
        // 把元素A插入到有序数组指定的位置（j）

        // 定义数组
        var arr = [100,80,20,90,60];

        // 第一次外部循环 
        // 有序数组                  无序数组 
        // [100]                     [100,80,20,90,60]
        // [80,100]                  [100,80,20,90,60]
        // [20, 80 , 100]            [100,80,20,90,60]
        // [20, 80 , 90 ,100]        [100,80,20,90,60]

        // 定义函数 insertSort
        function insertSort(elements) {
            // 外部循环
            for(var i = 0 ; i < elements.length ; i ++){
                // 定义变量,接收有序数组的下标(计算)
                var j =  i - 1;  
                // 定义变量，记录无序数组的每一个元素
                var temp =  elements[i]; 
                // 内不循环  elements[j] 
                while(j >= 0 && temp < elements[j]) {
                    // 把有序数组中较大的元素 往后移动一位
                    elements[j + 1] = elements[j];
                    // 为了找到准确的有序数组的下标
                    j -- ; 
                }
                // 在有序数组中插入元素 
                elements[ j + 1] = temp;
            }
            // 返回排序完成的数组
            return elements;
        }
        // 调用函数 insertSort
        var res = insertSort(arr);
        // 打印res输出
        console.log(res);//  [20, 60, 80, 90, 100]

    </script>
</body>
</html>